
<!DOCTYPE html>

<html>
  <head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>pymatgen.analysis.structure_prediction.dopant_predictor &#8212; pymatgen 2020.7.3 documentation</title>
    <link rel="stylesheet" href="../../../../_static/basic.css" type="text/css" />
    <link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" />
    <script id="documentation_options" data-url_root="../../../../" src="../../../../_static/documentation_options.js"></script>
    <script src="../../../../_static/jquery.js"></script>
    <script src="../../../../_static/underscore.js"></script>
    <script src="../../../../_static/doctools.js"></script>
    <script src="../../../../_static/language_data.js"></script>
    <script async="async" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
    <link rel="index" title="Index" href="../../../../genindex.html" />
    <link rel="search" title="Search" href="../../../../search.html" />
 
<script type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-33990148-1']);
  _gaq.push(['_trackPageview']);
</script>

  </head><body>
    <div class="related" role="navigation" aria-label="related navigation">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../../../../genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="../../../../py-modindex.html" title="Python Module Index"
             >modules</a> |</li>
        <li class="nav-item nav-item-0"><a href="../../../../index.html">pymatgen 2020.7.3 documentation</a> &#187;</li>
          <li class="nav-item nav-item-1"><a href="../../../index.html" >Module code</a> &#187;</li>
          <li class="nav-item nav-item-2"><a href="../../../pymatgen.html" accesskey="U">pymatgen</a> &#187;</li>
        <li class="nav-item nav-item-this"><a href="">pymatgen.analysis.structure_prediction.dopant_predictor</a></li> 
      </ul>
    </div>  

    <div class="document">
      <div class="documentwrapper">
          <div class="body" role="main">
            
  <h1>Source code for pymatgen.analysis.structure_prediction.dopant_predictor</h1><div class="highlight"><pre>
<span></span><span class="sd">&quot;&quot;&quot;</span>
<span class="sd">Predicting potential dopants</span>
<span class="sd">&quot;&quot;&quot;</span>

<span class="kn">import</span> <span class="nn">warnings</span>
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>


<span class="kn">from</span> <span class="nn">pymatgen.analysis.structure_prediction.substitution_probability</span> <span class="kn">import</span> \
    <span class="n">SubstitutionPredictor</span>

<span class="kn">from</span> <span class="nn">pymatgen.core.periodic_table</span> <span class="kn">import</span> <span class="n">Specie</span><span class="p">,</span> <span class="n">Element</span>


<div class="viewcode-block" id="get_dopants_from_substitution_probabilities"><a class="viewcode-back" href="../../../../pymatgen.analysis.structure_prediction.dopant_predictor.html#pymatgen.analysis.structure_prediction.dopant_predictor.get_dopants_from_substitution_probabilities">[docs]</a><span class="k">def</span> <span class="nf">get_dopants_from_substitution_probabilities</span><span class="p">(</span><span class="n">structure</span><span class="p">,</span> <span class="n">num_dopants</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span>
                                                <span class="n">threshold</span><span class="o">=</span><span class="mf">0.001</span><span class="p">,</span>
                                                <span class="n">match_oxi_sign</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Get dopant suggestions based on substitution probabilities.</span>

<span class="sd">    Args:</span>
<span class="sd">        structure (Structure): A pymatgen structure decorated with</span>
<span class="sd">            oxidation states.</span>
<span class="sd">        num_dopants (int): The number of suggestions to return for</span>
<span class="sd">            n- and p-type dopants.</span>
<span class="sd">        threshold (float): Probability threshold for substitutions.</span>
<span class="sd">        match_oxi_sign (bool): Whether to force the dopant and original species</span>
<span class="sd">            to have the same sign of oxidation state. E.g. If the original site</span>
<span class="sd">            is in a negative charge state, then only negative dopants will be</span>
<span class="sd">            returned.</span>

<span class="sd">    Returns:</span>
<span class="sd">        (dict): Dopant suggestions, given as a dictionary with keys &quot;n_type&quot; and</span>
<span class="sd">        &quot;p_type&quot;. The suggestions for each doping type are given as a list of</span>
<span class="sd">        dictionaries, each with they keys:</span>

<span class="sd">        - &quot;probability&quot;: The probability of substitution.</span>
<span class="sd">        - &quot;dopant_species&quot;: The dopant species.</span>
<span class="sd">        - &quot;original_species&quot;: The substituted species.</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="n">els_have_oxi_states</span> <span class="o">=</span> <span class="p">[</span><span class="nb">hasattr</span><span class="p">(</span><span class="n">s</span><span class="p">,</span> <span class="s2">&quot;oxi_state&quot;</span><span class="p">)</span> <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">structure</span><span class="o">.</span><span class="n">species</span><span class="p">]</span>

    <span class="k">if</span> <span class="ow">not</span> <span class="nb">all</span><span class="p">(</span><span class="n">els_have_oxi_states</span><span class="p">):</span>
        <span class="k">raise</span> <span class="ne">ValueError</span><span class="p">(</span><span class="s2">&quot;All sites in structure must have oxidation states to &quot;</span>
                         <span class="s2">&quot;predict dopants.&quot;</span><span class="p">)</span>

    <span class="n">sp</span> <span class="o">=</span> <span class="n">SubstitutionPredictor</span><span class="p">(</span><span class="n">threshold</span><span class="o">=</span><span class="n">threshold</span><span class="p">)</span>

    <span class="n">subs</span> <span class="o">=</span> <span class="p">[</span><span class="n">sp</span><span class="o">.</span><span class="n">list_prediction</span><span class="p">([</span><span class="n">s</span><span class="p">])</span> <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="nb">set</span><span class="p">(</span><span class="n">structure</span><span class="o">.</span><span class="n">species</span><span class="p">)]</span>
    <span class="n">subs</span> <span class="o">=</span> <span class="p">[{</span><span class="s1">&#39;probability&#39;</span><span class="p">:</span> <span class="n">pred</span><span class="p">[</span><span class="s1">&#39;probability&#39;</span><span class="p">],</span>
             <span class="s1">&#39;dopant_species&#39;</span><span class="p">:</span> <span class="nb">list</span><span class="p">(</span><span class="n">pred</span><span class="p">[</span><span class="s1">&#39;substitutions&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">keys</span><span class="p">())[</span><span class="mi">0</span><span class="p">],</span>
             <span class="s1">&#39;original_species&#39;</span><span class="p">:</span> <span class="nb">list</span><span class="p">(</span><span class="n">pred</span><span class="p">[</span><span class="s1">&#39;substitutions&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">values</span><span class="p">())[</span><span class="mi">0</span><span class="p">]}</span>
            <span class="k">for</span> <span class="n">species_preds</span> <span class="ow">in</span> <span class="n">subs</span> <span class="k">for</span> <span class="n">pred</span> <span class="ow">in</span> <span class="n">species_preds</span><span class="p">]</span>
    <span class="n">subs</span><span class="o">.</span><span class="n">sort</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="n">x</span><span class="p">[</span><span class="s1">&#39;probability&#39;</span><span class="p">],</span> <span class="n">reverse</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>

    <span class="k">return</span> <span class="n">_get_dopants</span><span class="p">(</span><span class="n">subs</span><span class="p">,</span> <span class="n">num_dopants</span><span class="p">,</span> <span class="n">match_oxi_sign</span><span class="p">)</span></div>


<div class="viewcode-block" id="get_dopants_from_shannon_radii"><a class="viewcode-back" href="../../../../pymatgen.analysis.structure_prediction.dopant_predictor.html#pymatgen.analysis.structure_prediction.dopant_predictor.get_dopants_from_shannon_radii">[docs]</a><span class="k">def</span> <span class="nf">get_dopants_from_shannon_radii</span><span class="p">(</span><span class="n">bonded_structure</span><span class="p">,</span> <span class="n">num_dopants</span><span class="o">=</span><span class="mi">5</span><span class="p">,</span>
                                   <span class="n">match_oxi_sign</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Get dopant suggestions based on Shannon radii differences.</span>

<span class="sd">    Args:</span>
<span class="sd">        bonded_structure (StructureGraph): A pymatgen structure graph</span>
<span class="sd">            decorated with oxidation states. For example, generated using the</span>
<span class="sd">            CrystalNN.get_bonded_structure() method.</span>
<span class="sd">        num_dopants (int): The nummber of suggestions to return for</span>
<span class="sd">            n- and p-type dopants.</span>
<span class="sd">        match_oxi_sign (bool): Whether to force the dopant and original species</span>
<span class="sd">            to have the same sign of oxidation state. E.g. If the original site</span>
<span class="sd">            is in a negative charge state, then only negative dopants will be</span>
<span class="sd">            returned.</span>

<span class="sd">    Returns:</span>
<span class="sd">        (dict): Dopant suggestions, given as a dictionary with keys &quot;n_type&quot; and</span>
<span class="sd">        &quot;p_type&quot;. The suggestions for each doping type are given as a list of</span>
<span class="sd">        dictionaries, each with they keys:</span>

<span class="sd">        - &quot;radii_diff&quot;: The difference between the Shannon radii of the species.</span>
<span class="sd">        - &quot;dopant_spcies&quot;: The dopant species.</span>
<span class="sd">        - &quot;original_species&quot;: The substituted species.</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="c1"># get a list of all Specie for all elements in all their common oxid states</span>
    <span class="n">all_species</span> <span class="o">=</span> <span class="p">[</span><span class="n">Specie</span><span class="p">(</span><span class="n">el</span><span class="p">,</span> <span class="n">oxi</span><span class="p">)</span> <span class="k">for</span> <span class="n">el</span> <span class="ow">in</span> <span class="n">Element</span>
                   <span class="k">for</span> <span class="n">oxi</span> <span class="ow">in</span> <span class="n">el</span><span class="o">.</span><span class="n">common_oxidation_states</span><span class="p">]</span>

    <span class="c1"># get a series of tuples with (coordination number, specie)</span>
    <span class="n">cn_and_species</span> <span class="o">=</span> <span class="nb">set</span><span class="p">((</span><span class="n">bonded_structure</span><span class="o">.</span><span class="n">get_coordination_of_site</span><span class="p">(</span><span class="n">i</span><span class="p">),</span>
                          <span class="n">bonded_structure</span><span class="o">.</span><span class="n">structure</span><span class="p">[</span><span class="n">i</span><span class="p">]</span><span class="o">.</span><span class="n">specie</span><span class="p">)</span>
                         <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">bonded_structure</span><span class="o">.</span><span class="n">structure</span><span class="o">.</span><span class="n">num_sites</span><span class="p">))</span>

    <span class="n">cn_to_radii_map</span> <span class="o">=</span> <span class="p">{}</span>
    <span class="n">possible_dopants</span> <span class="o">=</span> <span class="p">[]</span>

    <span class="k">for</span> <span class="n">cn</span><span class="p">,</span> <span class="n">species</span> <span class="ow">in</span> <span class="n">cn_and_species</span><span class="p">:</span>
        <span class="n">cn_roman</span> <span class="o">=</span> <span class="n">_int_to_roman</span><span class="p">(</span><span class="n">cn</span><span class="p">)</span>

        <span class="k">try</span><span class="p">:</span>
            <span class="n">species_radius</span> <span class="o">=</span> <span class="n">species</span><span class="o">.</span><span class="n">get_shannon_radius</span><span class="p">(</span><span class="n">cn_roman</span><span class="p">)</span>
        <span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span>
            <span class="n">warnings</span><span class="o">.</span><span class="n">warn</span><span class="p">(</span><span class="s2">&quot;Shannon radius not found for </span><span class="si">{}</span><span class="s2"> with coordination &quot;</span>
                          <span class="s2">&quot;number </span><span class="si">{}</span><span class="s2">.</span><span class="se">\n</span><span class="s2">Skipping...&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">species</span><span class="p">,</span> <span class="n">cn</span><span class="p">))</span>
            <span class="k">continue</span>

        <span class="k">if</span> <span class="n">cn</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">cn_to_radii_map</span><span class="p">:</span>
            <span class="n">cn_to_radii_map</span><span class="p">[</span><span class="n">cn</span><span class="p">]</span> <span class="o">=</span> <span class="n">_shannon_radii_from_cn</span><span class="p">(</span>
                <span class="n">all_species</span><span class="p">,</span> <span class="n">cn_roman</span><span class="p">,</span> <span class="n">radius_to_compare</span><span class="o">=</span><span class="n">species_radius</span><span class="p">)</span>

        <span class="n">shannon_radii</span> <span class="o">=</span> <span class="n">cn_to_radii_map</span><span class="p">[</span><span class="n">cn</span><span class="p">]</span>

        <span class="n">possible_dopants</span> <span class="o">+=</span> <span class="p">[{</span><span class="s1">&#39;radii_diff&#39;</span><span class="p">:</span> <span class="n">p</span><span class="p">[</span><span class="s1">&#39;radii_diff&#39;</span><span class="p">],</span>
                              <span class="s1">&#39;dopant_species&#39;</span><span class="p">:</span> <span class="n">p</span><span class="p">[</span><span class="s1">&#39;species&#39;</span><span class="p">],</span>
                              <span class="s1">&#39;original_species&#39;</span><span class="p">:</span> <span class="n">species</span><span class="p">}</span>
                             <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">shannon_radii</span><span class="p">]</span>

    <span class="n">possible_dopants</span><span class="o">.</span><span class="n">sort</span><span class="p">(</span><span class="n">key</span><span class="o">=</span><span class="k">lambda</span> <span class="n">x</span><span class="p">:</span> <span class="nb">abs</span><span class="p">(</span><span class="n">x</span><span class="p">[</span><span class="s1">&#39;radii_diff&#39;</span><span class="p">]))</span>

    <span class="k">return</span> <span class="n">_get_dopants</span><span class="p">(</span><span class="n">possible_dopants</span><span class="p">,</span> <span class="n">num_dopants</span><span class="p">,</span> <span class="n">match_oxi_sign</span><span class="p">)</span></div>


<span class="k">def</span> <span class="nf">_get_dopants</span><span class="p">(</span><span class="n">substitutions</span><span class="p">,</span> <span class="n">num_dopants</span><span class="p">,</span> <span class="n">match_oxi_sign</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Utility method to get n- and p-type dopants from a list of substitutions.</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="n">n_type</span> <span class="o">=</span> <span class="p">[</span><span class="n">pred</span> <span class="k">for</span> <span class="n">pred</span> <span class="ow">in</span> <span class="n">substitutions</span>
              <span class="k">if</span> <span class="n">pred</span><span class="p">[</span><span class="s1">&#39;dopant_species&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">oxi_state</span> <span class="o">&gt;</span>
              <span class="n">pred</span><span class="p">[</span><span class="s1">&#39;original_species&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">oxi_state</span>
              <span class="ow">and</span> <span class="p">(</span><span class="ow">not</span> <span class="n">match_oxi_sign</span> <span class="ow">or</span>
                   <span class="n">np</span><span class="o">.</span><span class="n">sign</span><span class="p">(</span><span class="n">pred</span><span class="p">[</span><span class="s1">&#39;dopant_species&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">oxi_state</span><span class="p">)</span> <span class="o">==</span>
                   <span class="n">np</span><span class="o">.</span><span class="n">sign</span><span class="p">(</span><span class="n">pred</span><span class="p">[</span><span class="s1">&#39;original_species&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">oxi_state</span><span class="p">))]</span>
    <span class="n">p_type</span> <span class="o">=</span> <span class="p">[</span><span class="n">pred</span> <span class="k">for</span> <span class="n">pred</span> <span class="ow">in</span> <span class="n">substitutions</span>
              <span class="k">if</span> <span class="n">pred</span><span class="p">[</span><span class="s1">&#39;dopant_species&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">oxi_state</span> <span class="o">&lt;</span>
              <span class="n">pred</span><span class="p">[</span><span class="s1">&#39;original_species&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">oxi_state</span>
              <span class="ow">and</span> <span class="p">(</span><span class="ow">not</span> <span class="n">match_oxi_sign</span> <span class="ow">or</span>
                   <span class="n">np</span><span class="o">.</span><span class="n">sign</span><span class="p">(</span><span class="n">pred</span><span class="p">[</span><span class="s1">&#39;dopant_species&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">oxi_state</span><span class="p">)</span> <span class="o">==</span>
                   <span class="n">np</span><span class="o">.</span><span class="n">sign</span><span class="p">(</span><span class="n">pred</span><span class="p">[</span><span class="s1">&#39;original_species&#39;</span><span class="p">]</span><span class="o">.</span><span class="n">oxi_state</span><span class="p">))]</span>

    <span class="k">return</span> <span class="p">{</span><span class="s1">&#39;n_type&#39;</span><span class="p">:</span> <span class="n">n_type</span><span class="p">[:</span><span class="n">num_dopants</span><span class="p">],</span> <span class="s1">&#39;p_type&#39;</span><span class="p">:</span> <span class="n">p_type</span><span class="p">[:</span><span class="n">num_dopants</span><span class="p">]}</span>


<span class="k">def</span> <span class="nf">_shannon_radii_from_cn</span><span class="p">(</span><span class="n">species_list</span><span class="p">,</span> <span class="n">cn_roman</span><span class="p">,</span> <span class="n">radius_to_compare</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;</span>
<span class="sd">    Utility func to get Shannon radii for a particular coordination number.</span>

<span class="sd">    As the Shannon radii depends on charge state and coordination number,</span>
<span class="sd">    species without an entry for a particular coordination number will</span>
<span class="sd">    be skipped.</span>

<span class="sd">    Args:</span>
<span class="sd">        species_list (list): A list of Species to get the Shannon radii for.</span>
<span class="sd">        cn_roman (str): The coordination number as a roman numeral. See</span>
<span class="sd">            Specie.get_shannon_radius for more details.</span>
<span class="sd">        radius_to_compare (float, optional): If set, the data will be returned</span>
<span class="sd">            with a &quot;radii_diff&quot; key, containing the difference between the</span>
<span class="sd">            shannon radii and this radius.</span>

<span class="sd">    Returns:</span>
<span class="sd">        (list of dict): The Shannon radii for all Species in species. Formatted</span>
<span class="sd">        as a list of dictionaries, with the keys:</span>

<span class="sd">        - &quot;species&quot;: The species with charge state.</span>
<span class="sd">        - &quot;radius&quot;: The Shannon radius for the species.</span>
<span class="sd">        - &quot;radius_diff&quot;: The difference between the Shannon radius and the</span>
<span class="sd">            radius_to_compare optional argument.</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="n">shannon_radii</span> <span class="o">=</span> <span class="p">[]</span>

    <span class="k">for</span> <span class="n">s</span> <span class="ow">in</span> <span class="n">species_list</span><span class="p">:</span>
        <span class="k">try</span><span class="p">:</span>
            <span class="n">radius</span> <span class="o">=</span> <span class="n">s</span><span class="o">.</span><span class="n">get_shannon_radius</span><span class="p">(</span><span class="n">cn_roman</span><span class="p">)</span>
            <span class="n">shannon_radii</span><span class="o">.</span><span class="n">append</span><span class="p">({</span>
                <span class="s1">&#39;species&#39;</span><span class="p">:</span> <span class="n">s</span><span class="p">,</span> <span class="s1">&#39;radius&#39;</span><span class="p">:</span> <span class="n">radius</span><span class="p">,</span>
                <span class="s1">&#39;radii_diff&#39;</span><span class="p">:</span> <span class="n">radius</span> <span class="o">-</span> <span class="n">radius_to_compare</span><span class="p">})</span>
        <span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span>
            <span class="k">pass</span>

    <span class="k">return</span> <span class="n">shannon_radii</span>


<span class="k">def</span> <span class="nf">_int_to_roman</span><span class="p">(</span><span class="n">number</span><span class="p">):</span>
    <span class="sd">&quot;&quot;&quot;Utility method to convert an int (less than 20) to a roman numeral.&quot;&quot;&quot;</span>
    <span class="n">roman_conv</span> <span class="o">=</span> <span class="p">[(</span><span class="mi">10</span><span class="p">,</span> <span class="s2">&quot;X&quot;</span><span class="p">),</span> <span class="p">(</span><span class="mi">9</span><span class="p">,</span> <span class="s2">&quot;IX&quot;</span><span class="p">),</span> <span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="s2">&quot;V&quot;</span><span class="p">),</span> <span class="p">(</span><span class="mi">4</span><span class="p">,</span> <span class="s2">&quot;IV&quot;</span><span class="p">),</span> <span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="s2">&quot;I&quot;</span><span class="p">)]</span>

    <span class="n">result</span> <span class="o">=</span> <span class="p">[]</span>
    <span class="k">for</span> <span class="p">(</span><span class="n">arabic</span><span class="p">,</span> <span class="n">roman</span><span class="p">)</span> <span class="ow">in</span> <span class="n">roman_conv</span><span class="p">:</span>
        <span class="p">(</span><span class="n">factor</span><span class="p">,</span> <span class="n">number</span><span class="p">)</span> <span class="o">=</span> <span class="nb">divmod</span><span class="p">(</span><span class="n">number</span><span class="p">,</span> <span class="n">arabic</span><span class="p">)</span>
        <span class="n">result</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="n">roman</span> <span class="o">*</span> <span class="n">factor</span><span class="p">)</span>
        <span class="k">if</span> <span class="n">number</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
            <span class="k">break</span>
    <span class="k">return</span> <span class="s2">&quot;&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
</pre></div>

            <div class="clearer"></div>
          </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related" role="navigation" aria-label="related navigation">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../../../../genindex.html" title="General Index"
             >index</a></li>
        <li class="right" >
          <a href="../../../../py-modindex.html" title="Python Module Index"
             >modules</a> |</li>
        <li class="nav-item nav-item-0"><a href="../../../../index.html">pymatgen 2020.7.3 documentation</a> &#187;</li>
          <li class="nav-item nav-item-1"><a href="../../../index.html" >Module code</a> &#187;</li>
          <li class="nav-item nav-item-2"><a href="../../../pymatgen.html" >pymatgen</a> &#187;</li>
        <li class="nav-item nav-item-this"><a href="">pymatgen.analysis.structure_prediction.dopant_predictor</a></li> 
      </ul>
    </div>

    <div class="footer" role="contentinfo">
        &#169; Copyright 2011, Pymatgen Development Team.
      Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 3.1.2.
    </div>
<div class="footer">This page uses <a href="http://analytics.google.com/">
Google Analytics</a> to collect statistics. You can disable it by blocking
the JavaScript coming from www.google-analytics.com.
<script type="text/javascript">
  (function() {
    var ga = document.createElement('script');
    ga.src = ('https:' == document.location.protocol ?
              'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    ga.setAttribute('async', 'true');
    document.documentElement.firstChild.appendChild(ga);
  })();
</script>
</div>

  </body>
</html>